package futbol

import exepcion.PartidoException
import org.junit.Before
import org.junit.Test
import org.junit.Assert

public class TesteoJugadorEstandar {

		//a pesar de llamarse TesteoJugador el metodo que se testea esten Partido
	Jugador jugador1
	Jugador jugador2
	Jugador jugador3
	Partido partido
	Estandar estado1
	Condicional estado3
	Solidario estado2
	var int i
	
	@Before
	def init(){
	
	jugador1 = new Jugador
	jugador2 = new Jugador
	jugador3 = new Jugador
	partido = new Partido
	estado1 = new Estandar
	estado2 = new Solidario
	estado3 = new Condicional	
	jugador1.setPartido(partido)
	jugador2.setPartido(partido)
	jugador1.setEstado(estado1) //seteo jugador1 como Estandar
	jugador2.setEstado(estado2) //seteo a jugador como solidario
	
	}
	
	
	//testeo agregar un onceavo estandard, debe tirar PartidoException
	@Test (expected = typeof(PartidoException))

	def void testAgregarStandar(){
		i = 0	
	//agrego 10 veces un mismo jugador para tener 10 que son estandar	
		while(i<10){
			
			partido.agregarJugador(jugador1)
			i= i+1
	
		}
	
			//metodo que intenta agregar al onceavo estandar, tiene que reventar
			partido.agregarJugador(jugador1)
	
	}
	
	
	@Test
	//testeo para probar si saca a un solidario para poner a un standard
	def void TesteoConSolidarios(){
		i = 0
		var int cantidadEstandar
		var int cantidadSolidarios	
	//agrego 6 veces un mismo jugador para tener 6 que son estandar	
		while(i<6){
			
			partido.agregarJugador(new Jugador(estado1))
			i= i+1
	
		}
		i=0
		while(i<4){ //lleno lo que queda con solidarios
			partido.agregarJugador(jugador2)
			i=i+1
		}
		
		jugador1.inscribirmeAPartido(partido) //intento meter al jugador al partido
		//compruebo que hay 10 jugadores
		Assert::assertEquals(10,partido.cantidadDeJugadoresActuales(),0.01)
		//compruebo que jugador1 esta inscripto
		Assert::assertTrue(partido.EstaInscripto(jugador1))
		
		
	}
	
	@Test
	//testeo para probar si saca a un solidario o condicional para poner a un standard
	def void TesteoConSolidariosYSolidarios(){
		i = 0
		//agrego 6 veces un mismo jugador para tener 6 que son solidarios	
		while(i<6){
			
			partido.agregarJugador(new Jugador(estado2))
			i= i+1
	
		}
		i=0
		while(i<4){ //lleno lo que queda con condicionales
			partido.agregarJugador(new Jugador(estado3))
			i=i+1
		}

		jugador1.inscribirmeAPartido(partido) //intento meter al jugador al partido
		//compruebo que hay 10 jugadores
		Assert::assertEquals(10,partido.cantidadDeJugadoresActuales(),0.01)
		//compruebo que jugador1 esta inscripto
		Assert::assertTrue(partido.EstaInscripto(jugador1))
	}
	
}